package com.itheima.多态.多态的弊端和转型_05;
/*
    多态的弊端:
        由于多态语法强制规定了编译看父类,所以使用多态语法接收到的对象
        不能直接访问子类特有成员!降低了灵活性!
    解决方案:
        通过多态的向下转型来解决!
    多态转型:
        1.向上转型(自动类型转换) -- 多态默认格式
        2.向下转型(强制类型转换) -- 左子右父
 */
public class Demo {
    public static void main(String[] args) {
        //多态:父类引用指向子类对象
        Animal animal = new Dog();
        //2.向下转型(强制类型转换) -- 左子右父
        //风险:如果强制的类型不是对应对象的真实类型,那么会存在类型转换异常
        //规避风险:通过instanceof关键字解决
        if(animal instanceof Dog){ //如果animal记录的是真实类型是Dog类型,就返回true
            Dog dog = (Dog)animal;  //ClassCastException
        }
        Dog dog = (Dog)animal;

        //多态语法下,成员的访问特点:编译看左边(父类)
        dog.lookHome();//编译就过不去!
    }
}
